zacatecnicky dotaz ohledne PARADOX databaze

Otázka od: Miroslav Částka

10. 9. 2002 21:15

Dobry den,

Mam nasl. problem. Mam jednu tabulku a k ni propojene další 4 ve vztahu
1:1. Problem je v tom, ze pokud z odeberu zaznam z tabulky1 a podivam se
pres BDE do tabulky 2,3 atd. Tak se mi zde dane "pod"zaznamy nesmazou.
Jestli se nemylim, tak by tento problem mel vyresit pomoci BDE (nekde
neco zaskrtnout), ale bohuzel to nikde není. Nebo se pletu a musim to
resit programatorsky ???
Predem dekuji za odpoved
Mirek

---
Odchozí zpráva neobsahuje viry.
Zkontrolováno antivirovým systémem AVG (http://www.grisoft.cz).
Verze: 6.0.386 / Virová báze: 218 - datum vydání: 9.9.2002

Odpovedá: Pavel Zichovsky

11. 9. 2002 8:20

Zdravim,

Od: Miroslav Částka <miroslav.castka@uo.hospital.cz>
> Mam nasl. problem. Mam jednu tabulku a k ni propojene další 4 ve vztahu
> 1:1. Problem je v tom, ze pokud z odeberu zaznam z tabulky1 a podivam se
> pres BDE do tabulky 2,3 atd. Tak se mi zde dane "pod"zaznamy nesmazou.
> Jestli se nemylim, tak by tento problem mel vyresit pomoci BDE (nekde
> neco zaskrtnout), ale bohuzel to nikde není. Nebo se pletu a musim to
> resit programatorsky ???

V podstate mate moznost nastavit tuto referencni integritu bud primo do
paradoxovych
tabulek, a to asi nejjednoduseji pomoci Database Desktopu (definice referencni
integrity
ve strukture tabulky), ale tam se mi nikdy nepovedlo spravne rozchodit tu
moznost
update (tj. ze pri zmene/smazani master zaznamu dojde automaticky ke
zmene/smazani vsech child zaznamu). Bezpecne mi vzdycky fungovala jen moznost
prohibit, ktera nedovoli zmenu (klicovych poli) /smazani master zaznamu, pokud
k
nemu existuji nejake child zaznamy.

Druha moznost (kterou doporucuju) je resit to programove, nejlepe tak, ze v
eventu
beforedelete master tabulky nejdrive smazete child zaznamy z ostatnich tabulek,
a kdyz
to nepujde, tak nepovolite smazat ani ten master zaznam. Podobne pri uprave
master
zaznamu v eventu beforepost upravite child zaznamy, pokud doslo ke zmene
klicovych
poli.

No a treti moznost je zacit pouzivat nejaky SQL server (napr. Firebird), ktery
umi
referencni integritu resit sam o sobe.


S pozdravem
Pavel Žichovský (zichovsky@trul.cz)

Odpovedá: Jan Sebelík

11. 9. 2002 10:25

> Odesílatel: Miroslav Částka <miroslav.castka@uo.hospital.cz>
> Mam nasl. problem. Mam jednu tabulku a k ni propojene další 4 ve vztahu
> 1:1. Problem je v tom, ze pokud z odeberu zaznam z tabulky1 a podivam se
> pres BDE do tabulky 2,3 atd. Tak se mi zde dane "pod"zaznamy nesmazou.
> Jestli se nemylim, tak by tento problem mel vyresit pomoci BDE (nekde
> neco zaskrtnout), ale bohuzel to nikde není. Nebo se pletu a musim to
> resit programatorsky ???

Pokud ti dobre rozumim, tak mas na mysli tzv. "kaskadni delete".
To vubec neni trivialni problem, InterBase to napr. umi az od verze 5, jine
databaze to treba neumi vubec.

U Paradoxu to lze nastavit napr. pres Database Desktop: referencni integrita a
zaskrtnout nikoli "prohibit", ale "cascade". Jenze ja bych na to radsi
nespolehal  

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================

Odpovedá: Otisk Rene

11. 9. 2002 18:50

Kdyz jsem delal kdysi s Paradoxem, tak s cascade integrity jsem mel
nasleduji zkusenosti:

1. vecne mi to hlasilo poskozene indexy
2. pri vetsim poctu zaznamu mi cascade update resp. delete trvalo tak na
uvareni kaficka

Sroub



> Odesílatel: Miroslav Částka <miroslav.castka@uo.hospital.cz>
> Mam nasl. problem. Mam jednu tabulku a k ni propojene další 4 ve vztahu
> 1:1. Problem je v tom, ze pokud z odeberu zaznam z tabulky1 a podivam se
> pres BDE do tabulky 2,3 atd. Tak se mi zde dane "pod"zaznamy nesmazou.
> Jestli se nemylim, tak by tento problem mel vyresit pomoci BDE (nekde
> neco zaskrtnout), ale bohuzel to nikde není. Nebo se pletu a musim to
> resit programatorsky ???

Pokud ti dobre rozumim, tak mas na mysli tzv. "kaskadni delete".
To vubec neni trivialni problem, InterBase to napr. umi az od verze 5, jine
databaze to treba neumi vubec.

U Paradoxu to lze nastavit napr. pres Database Desktop: referencni integrita
a zaskrtnout nikoli "prohibit", ale "cascade". Jenze ja bych na to radsi
nespolehal  

Honza
=========================================
= HAES - RNDr. Jan Sebelik
= http://www.haes.cz
= Skolici a konzultacni stredisko pro Delphi a Win32
= Vojtiskova 206
= 507 81 Lazne Belohrad
= tel. 0434 692 569 (0776 347735)
=========================================